Skip to main content

UAT Test Plan — Service Order Lockout

FieldValue
Version2.0
DateFebruary 27, 2026
ProjectBestway BC Development
EnvironmentBusiness Central Sandbox
warning

This test plan covers the v1.1.0.0 release, which includes all defect fixes from the pre-UAT code review plus new features (stale lock auto-release, Release Lock action, configuration page). The BW-CS-SERVICE permission set must be assigned to all CS test users before testing begins. SUPER test users do NOT need BW-CS-SERVICE — they are permitted through the access check automatically.

Overview

This test plan validates the Service Order Lockout extension (v1.1.0.0) for Microsoft Dynamics 365 Business Central. The extension prevents two customer service representatives from simultaneously editing the same service order by detecting concurrent access, displaying a notification to the second user, and switching that user to read-only mode. A Live Status column on the Service Orders list allows agents to identify at a glance which orders are currently being worked on.\n\nv1.1.0.0 adds stale lock auto-release (configurable timeout), a Release Lock action for SUPER users, a configuration page with an enable/disable toggle, proper record navigation lock handling, and the BW-CS-SERVICE permission set for role-based access control.

Extension Object Summary

ObjectIDExtendsPurpose
Table Extension52400Service HeaderAdds Check Status (Boolean), Live Status (Option), Open By User ID (Text[50]), and Locked At (DateTime) fields.
Table52401N/AService Order Lockout Setup — singleton configuration table (lockout toggle, stale lock timeout).
Page Extension52400Service Orders (list)Adds Live Status column (computed from page variable) before the standard Status column.
Page Extension52401Service Order (card)Lock-on-open, unlock-on-close, record navigation handling, Release Lock action, BW-CS-SERVICE permission check.
Page52402N/AService Order Lockout Setup — configuration card page (Lockout Enabled toggle, Stale Lock Timeout).
Permission Set52401N/ABW-CS-SERVICE — grants Read/Modify on Service Header and Read on Lockout Setup.
Codeunit52402N/AUpgrade codeunit — clears stale locks during v1.0 → v1.1 migration only.

Prerequisites

  • The Service Order Lockout extension v1.1.0.0 is published to the sandbox environment.
  • At least two BC user accounts are available: User A and User B, both assigned the BW-CS-SERVICE permission set.
  • A third user account (User C) with the SUPER role but WITHOUT BW-CS-SERVICE is available for SUPER user tests (Test Areas 5, 9, 12).
  • A fourth user account (User D) without BW-CS-SERVICE and without SUPER is available for role-scoping tests (Test Area 5).
  • At least 5 open service orders exist in the sandbox in an editable state.
  • User A and User B can open BC in completely separate browser sessions simultaneously (separate browsers, or one incognito/private window).
  • A BC account with permissions to inspect table data (Check Status, Open By User ID, Locked At fields) is available for optional verification steps.
  • The Service Order Lockout Setup page is accessible and shows default values (Lockout Enabled = true, Stale Lock Timeout = 4 hours).

Test Area 1: Service Orders List — Live Status Column

Requirement: A 'Live Status' column showing 'Open' or 'In Progress' must appear on the Service Orders list view.

Verify that the Live Status column is present, correctly positioned, non-editable, and accurately reflects the lock state of each order. The column is computed from a page variable (not a persisted field) and is hidden when lockout is disabled.

TC-1.1: Live Status Column Is Present and Correctly Positioned

StepActionExpected Result
1Log in as User A (BW-CS-SERVICE role). Navigate to Service Orders and open the list.The Service Orders list opens showing orders.
2Inspect the column headers in the list.A 'Live Status' column is visible and is positioned immediately before the standard 'Status' column.
3Attempt to click into or edit the Live Status column for any row.The column is non-editable — no cursor appears and no value can be entered.

TC-1.2: Live Status Shows 'Open' for Orders Not Currently Being Worked

StepActionExpected Result
1Confirm that no test service orders are currently open in any active session.No user has any test orders open.
2In User A's session, view the Service Orders list.The list is visible with multiple service orders.
3Locate at least 3 service orders and observe the Live Status column for each.Each order displays 'Open' in the Live Status column.

TC-1.3: Live Status Shows 'In Progress' While an Order Is Open

StepActionExpected Result
1User A opens a service order (e.g., the first one in the list). Leave it open.The service order card is open in User A's session.
2In a separate session, User B navigates to the Service Orders list.User B can see the list.
3User B locates the same service order in the list and observes the Live Status column.The order shows 'In Progress' in the Live Status column.
4User B observes the Live Status for other orders not currently open.All other orders still show 'Open'.

Test Area 2: Concurrent Access — Record Locking

Requirement: When a second user opens an order already open by another user, they must see a message identifying the first user and be placed in read-only mode.

Verify the lockout message, read-only enforcement, and that the first user retains full edit access.

note

If you have access to inspect table data, confirm after step 1 that Check Status = true, Open By User ID = User A's BC User Name, and Locked At is populated with a recent timestamp on the service order record.

TC-2.1: First Opener Acquires the Lock

StepActionExpected Result
1User A opens a service order card.The service order card opens and is fully editable for User A. No message is shown.
2(Optional) Inspect the Service Header record in Developer Tools or an admin page.Check Status = true. Open By User ID = User A's BC User Name. Locked At = current timestamp.
3User A edits a field (e.g., updates the Description) and saves.The change saves successfully. No error or restriction is encountered.

TC-2.2: Second User Receives the Lockout Message

StepActionExpected Result
1User A has the order open from TC-2.1. In a separate session, User B navigates to and opens the same order.A message dialog is displayed to User B.
2Read the message text.The message reads: '[User A's User Name] is currently working on this Service Order. Click OK to switch to View Only Mode.' The user name shown must match User A's actual BC User Name.
3User B clicks OK.The dialog closes and the service order card is displayed to User B.

TC-2.3: Second User's View Is Read-Only After Lockout

StepActionExpected Result
1After clicking OK (TC-2.2), User B attempts to click into and edit any field on the order.No fields are editable. The page is in read-only/view mode.
2User B attempts to use any action that modifies data (e.g., Add Line, Post).Data-modifying actions are hidden or disabled. User B cannot make changes.
3User B can still scroll through and read all information on the order.All data is visible and readable. Only editing is restricted.

TC-2.4: First User Retains Full Edit Access While Lock Is Active

StepActionExpected Result
1While User B views the order in read-only mode, return to User A's session.User A's view of the service order is unchanged.
2User A edits multiple fields and saves.All fields are editable. User A can make and save changes without restriction or error.

Test Area 3: Lock Release on Close

Requirement: When the locking user closes the order, the lock must be released so the next opener gets full edit access.

Verify the lock releases correctly on close and that a read-only viewer closing the order does not prematurely release the lock.

TC-3.1: Lock Releases When the Locking User Closes the Order

StepActionExpected Result
1User A closes the service order card (navigates away or closes the tab).The card closes normally with no errors.
2(Optional) Inspect the Service Header record.Check Status = false. Open By User ID is blank. Locked At is cleared.
3Observe the Live Status column in the list for the order User A just closed.The order now shows 'Open' in the Live Status column.

TC-3.2: Next User Can Edit After Lock Is Released

StepActionExpected Result
1After User A closes the order (TC-3.1), User B closes their read-only view and then reopens the same order.No lockout message is shown to User B.
2User B attempts to edit a field on the order.The page is fully editable. User B can make and save changes without restriction.
3(Optional) Inspect the Service Header record.Check Status = true. Open By User ID = User B's BC User Name.

TC-3.3: Closing a Read-Only View Does Not Release the Lock

StepActionExpected Result
1User A opens a second service order and holds it open.User A holds the lock.
2User B opens the same order, receives the lockout message, clicks OK, and is in read-only mode.User B is viewing the order in read-only mode.
3User B closes their read-only view.The card closes normally for User B. No error occurs.
4Confirm User A's session still has the order open and editable.User A's card is still open and editable. The lock has NOT been released by User B closing.

Test Area 4: Edge Cases

TC-4.1: Same User Opens the Same Order in a Second Session

StepActionExpected Result
1User A opens a service order in one browser window. User A then opens a second browser window and opens the same order.Observe and document what happens.
2Note whether a lockout message appears in the second window.Expected: No lockout message — Open By User ID matches the current user. The order is editable in both windows. Document the actual result.
3User A closes one of the two windows.Document whether the lock is released when one session closes while the other remains open. Confirm whether this is acceptable behavior.

TC-4.2: Posting a Service Order Clears the Lock

StepActionExpected Result
1User A opens a service order that is in a postable state and posts it.The order is posted successfully.
2(Optional) Inspect the posted Service Header record.Check Status = false. Open By User ID is empty.
3Verify the posted order no longer appears in the open Service Orders list.The posted order is absent from the open orders list.

Test Area 5: Role Scoping — BW-CS-SERVICE Permission Set

Requirement: Only users with the BW-CS-SERVICE permission set (or SUPER role) can access Service Orders when lockout is enabled.

Verify that the permission check correctly gates access based on the BW-CS-SERVICE permission set and that SUPER users are permitted through without it.

TC-5.1: CS Users with BW-CS-SERVICE Experience Lockout Behavior Normally

StepActionExpected Result
1User A (BW-CS-SERVICE role) opens a service order.The card opens normally with no error or unexpected dialog. User A has full edit access.
2User B (BW-CS-SERVICE role) opens the same order.User B receives the lockout message identifying User A by name and is placed in read-only mode.
3User A closes the order. User B reopens it.User B can now open and edit the order normally. No lockout message appears.

TC-5.2: User Without BW-CS-SERVICE or SUPER Is Blocked

StepActionExpected Result
1User D (no BW-CS-SERVICE, no SUPER) attempts to open a service order card.An error message is displayed.
2Read the error message text.The message reads: 'You need the BW-CS-SERVICE permission set to access Service Orders. Contact your system administrator to request access.'
3Confirm User D cannot proceed past the error.The Service Order card does not open. User D is blocked.

TC-5.3: SUPER User Without BW-CS-SERVICE Can Access Service Orders

StepActionExpected Result
1User C (SUPER role, no BW-CS-SERVICE) opens a service order card.The card opens normally. No permission error is shown.
2User C edits a field and saves.The change saves successfully. SUPER users have full access.

Test Area 6: User Interface Quality

TC-6.1: Internal Fields Are Not Visible on the Service Order Card

StepActionExpected Result
1User A opens any service order card.The service order card opens normally.
2Inspect all visible fields in the card header and all FastTabs.The field 'Check Status' (Boolean) is NOT visible anywhere on the card.
3Continue inspecting all tabs and sections.The field 'Open By User ID' (text) is NOT visible anywhere on the card.

TC-6.2: Live Status Column Shows Clean Values

StepActionExpected Result
1View the Service Orders list with a mix of locked and unlocked orders.The Live Status column shows only 'Open' or 'In Progress'. No blank values, no numeric option indexes (0, 1, 2), and no raw field names appear.
2Confirm the column header reads 'Live Status'.Column header is correctly labeled 'Live Status' (not 'LiveStatus' or 'Check Status').

Test Area 7: Regression — Existing Service Order Functionality

TC-7.1: Standard Service Order Operations Are Unaffected

StepActionExpected Result
1User A opens a service order not currently locked by anyone.The order opens normally. No error messages or unexpected dialogs appear.
2User A adds a service line, updates the description, and changes the responsible technician.All standard operations complete without error.
3User A saves and closes the order.The order saves correctly and the lock is released (Check Status = false).

TC-7.2: Existing Service Orders List Filters and Views Still Work

StepActionExpected Result
1Open the Service Orders list and apply a filter (e.g., by Release Status = Open).The filtered view loads correctly and shows only matching orders.
2Apply additional filters (by Customer No., Responsible, or date range).Additional filters work correctly and do not interact with the Live Status column.
3Remove all filters and confirm the Live Status column is still present.The Live Status column persists across filter changes.

TC-7.3: Service Orders List Performance with Multiple Records

note

This test validates that the CurrPage.Update() render-loop fix has been applied. In the original v1.0 code, calling CurrPage.Update() from OnAfterGetRecord caused the list to reload continuously, producing severe performance degradation on any list with real data.

StepActionExpected Result
1Open the Service Orders list with 30 or more records visible.The list loads within a few seconds — comparable to other standard BC list pages.
2Scroll through the full list end-to-end.Scrolling is smooth. The page does not repeatedly reload or freeze.
3Note the approximate time to fully render the list.Render time is acceptable for the record count. Document the observed load time.

Test Area 8: Stale Lock Auto-Release

Requirement: Locks older than the configured timeout are automatically cleared when another user opens the order.

Verify that stale locks are detected and auto-cleared based on the Locked At timestamp and the configured Stale Lock Timeout. These tests require either (a) adjusting the timeout to a low value (1 hour) and waiting, or (b) directly manipulating the Locked At field on a test record to simulate an aged lock.

note

To simulate a stale lock without waiting: use Developer Tools or an admin page to set the Locked At field on a test Service Order to a timestamp older than the configured timeout (e.g., yesterday). Then open the order as a different user to trigger the stale check.

TC-8.1: Stale Lock Is Auto-Cleared on Page Open

StepActionExpected Result
1Create a stale lock: set Check Status = true, Open By User ID = User A, and Locked At to a timestamp older than the configured timeout on a test order.The test order shows as locked by User A with an aged timestamp.
2User B opens the same service order card.No lockout message is shown. The stale lock is automatically cleared.
3User B can edit the order normally.The page is fully editable. User B holds the lock.
4(Optional) Inspect the Service Header record.Check Status = true. Open By User ID = User B. Locked At = current timestamp.

TC-8.2: Non-Stale Lock Is NOT Auto-Cleared

StepActionExpected Result
1User A opens a service order normally (creating a fresh lock).User A holds a lock with a current Locked At timestamp.
2User B opens the same order within a few minutes.User B receives the standard lockout message identifying User A. The lock is NOT auto-cleared.
3User B clicks OK and enters read-only mode.User B is in View Only mode. The fresh lock was correctly preserved.

TC-8.3: Lock with No Timestamp Is Treated as Stale

StepActionExpected Result
1Create a lock with no timestamp: set Check Status = true, Open By User ID = User A, and Locked At = 0DT (empty/blank) on a test order.The test order shows as locked by User A with no timestamp.
2User B opens the same service order card.No lockout message is shown. The lock with no timestamp is treated as stale and auto-cleared.
3User B can edit the order normally.The page is fully editable. User B holds the lock with a current timestamp.

TC-8.4: Stale Lock Auto-Release Respects Configured Timeout

StepActionExpected Result
1Set the Stale Lock Timeout to 1 hour on the Service Order Lockout Setup page.Timeout is saved as 1 hour.
2Create a stale lock with Locked At set to 2 hours ago on a test order.The lock is older than the 1-hour timeout.
3User B opens the order. Confirm the stale lock is auto-cleared.Lock is auto-cleared. User B can edit.
4Create another lock with Locked At set to 30 minutes ago on a different test order.The lock is newer than the 1-hour timeout.
5User B opens this order. Confirm the lock is NOT auto-cleared.User B receives the lockout message. The fresh lock is preserved.
6Reset the Stale Lock Timeout to 4 hours.Timeout restored to default.

Test Area 9: Release Lock Action

Requirement: SUPER users can manually force-release a stuck lock from the Service Order card.

Verify the Release Lock action is available, correctly gated to SUPER users, and properly transfers the lock.

TC-9.1: Release Lock Action Is Visible When a Lock Exists

StepActionExpected Result
1User A opens a service order to acquire the lock.User A holds the lock.
2User C (SUPER) opens the same order and receives the lockout message. Click OK.User C is in View Only mode.
3Inspect the Processing actions on the action bar.A 'Release Lock' action is visible and enabled.

TC-9.2: Release Lock Action Is Disabled When No Lock Exists

StepActionExpected Result
1User C (SUPER) opens a service order that is NOT currently locked.The order opens normally. User C holds the lock.
2Inspect the Processing actions on the action bar.The 'Release Lock' action is visible but disabled (grayed out), because User C already holds the lock via normal acquisition.

TC-9.3: Release Lock Transfers the Lock to the SUPER User

StepActionExpected Result
1User A holds a lock on an order. User C (SUPER) opens the order and is in View Only mode.User C sees the lockout message and clicks OK.
2User C clicks the 'Release Lock' action.A confirmation dialog appears: 'Release the lock held by [User A] on this Service Order?'
3User C confirms the release.A message appears: 'Lock released and reassigned to you.' The page becomes editable.
4(Optional) Inspect the Service Header record.Check Status = true. Open By User ID = User C. Locked At = current timestamp.

TC-9.4: Non-SUPER User Cannot Use Release Lock

StepActionExpected Result
1User A holds a lock on an order. User B (BW-CS-SERVICE, no SUPER) opens the order and enters View Only mode.User B is in read-only mode.
2User B attempts to click the 'Release Lock' action (if visible).Either the action is not visible, or clicking it produces an error: 'You must have the SUPER role to release another user's lock.'

TC-9.5: Release Lock Can Be Cancelled

StepActionExpected Result
1User C (SUPER) opens a locked order and is in View Only mode.User C sees the lockout message.
2User C clicks the 'Release Lock' action. The confirmation dialog appears.The dialog asks for confirmation.
3User C clicks 'No' (cancel).The dialog closes. The lock is NOT released. The page remains in View Only mode.

Test Area 10: Service Order Lockout Setup

Requirement: Administrators can enable/disable lockout and configure the stale lock timeout.

Verify the configuration page is accessible, settings persist, and the lockout toggle correctly enables or disables all locking behavior.

TC-10.1: Setup Page Is Accessible and Shows Defaults

StepActionExpected Result
1Search for 'Service Order Lockout Setup' in the BC search bar.The page appears in the search results.
2Open the Service Order Lockout Setup page.The page opens showing two fields: Lockout Enabled and Stale Lock Timeout (Hours).
3Verify default values.Lockout Enabled = true (checked). Stale Lock Timeout (Hours) = 4.

TC-10.2: Disabling Lockout Bypasses All Locking Behavior

StepActionExpected Result
1On the Service Order Lockout Setup page, uncheck 'Lockout Enabled' and save.Lockout Enabled = false.
2User A opens a service order.The order opens normally. No lock is acquired.
3User B opens the same order simultaneously.No lockout message is shown. Both users can edit the order concurrently.
4Navigate to the Service Orders list.The Live Status column is hidden (not visible).
5Re-enable 'Lockout Enabled' on the setup page.Lockout Enabled = true. Restore for subsequent tests.

TC-10.3: Stale Lock Timeout Has Valid Range

StepActionExpected Result
1On the Service Order Lockout Setup page, attempt to set Stale Lock Timeout to 0.BC displays a validation error. The minimum value is 1.
2Attempt to set Stale Lock Timeout to 73.BC displays a validation error. The maximum value is 72.
3Set Stale Lock Timeout to 8 and save.The value saves successfully as 8.
4Reset Stale Lock Timeout to 4.Default restored.

TC-10.4: Settings Persist Across Sessions

StepActionExpected Result
1Set Stale Lock Timeout to 6 hours and close the setup page.The value is saved.
2Open a new BC session and navigate to Service Order Lockout Setup.The page opens.
3Verify the Stale Lock Timeout value.The value is 6, confirming it persisted across sessions.
4Reset to 4 hours.Default restored.

Test Area 11: Record Navigation Lock Handling

Requirement: Navigating between Service Orders via Next/Previous on the card must correctly release the previous lock and acquire a new one.

Verify that the lock follows the currently displayed record, not just the first record opened.

TC-11.1: Navigating to Next Record Releases Previous Lock

StepActionExpected Result
1User A opens Service Order #1 from the list.Order #1 opens and User A holds the lock. Note the order number.
2User A clicks the 'Next' arrow (or keyboard shortcut) to navigate to Order #2.Order #2 is now displayed on the card.
3(Optional) Inspect Order #1 in the Service Header table.Order #1: Check Status = false. Open By User ID = blank. The lock was released.
4(Optional) Inspect Order #2 in the Service Header table.Order #2: Check Status = true. Open By User ID = User A. The new lock was acquired.

TC-11.2: Navigating to Previous Record Releases Current Lock

StepActionExpected Result
1From TC-11.1, User A clicks the 'Previous' arrow to navigate back to Order #1.Order #1 is now displayed on the card.
2(Optional) Inspect Order #2 in the Service Header table.Order #2: Check Status = false. Open By User ID = blank. The lock was released.
3(Optional) Inspect Order #1.Order #1: Check Status = true. Open By User ID = User A. The lock was re-acquired.

TC-11.3: Navigating Into a Locked Record Shows Lockout Message

StepActionExpected Result
1User B opens and holds a lock on Order #3.User B holds the lock on Order #3.
2User A opens Order #2 (adjacent to Order #3 in the list).User A holds the lock on Order #2.
3User A navigates forward to Order #3.User A receives the lockout message identifying User B and enters View Only mode for Order #3.
4(Optional) Inspect Order #2.Order #2: Check Status = false. The previous lock was released even though the new record is locked by someone else.

TC-11.4: Closing the Card After Navigation Releases the Current Lock

StepActionExpected Result
1User A opens Order #1, navigates to Order #2, then navigates to Order #3.User A is viewing Order #3.
2User A closes the Service Order card.The card closes normally.
3(Optional) Inspect Orders #1, #2, and #3.Order #3: Check Status = false (released on close). Orders #1 and #2: Check Status = false (released during navigation). No orphaned locks remain.

Test Area 12: SUPER User Behavior

Requirement: SUPER users can access Service Orders without BW-CS-SERVICE and can use the Release Lock action.

Verify the full SUPER user workflow — access, locking, and the Release Lock action — without the BW-CS-SERVICE permission set assigned.

TC-12.1: SUPER User Can Open and Lock a Service Order

StepActionExpected Result
1User C (SUPER, no BW-CS-SERVICE) opens a service order card.The card opens normally. No permission error is shown.
2(Optional) Inspect the Service Header record.Check Status = true. Open By User ID = User C. The SUPER user acquired the lock like any other user.
3User C closes the order.The lock is released. Check Status = false.

TC-12.2: SUPER User Sees Lockout Message for Orders Locked by Others

StepActionExpected Result
1User A (BW-CS-SERVICE) opens and holds a lock on a service order.User A holds the lock.
2User C (SUPER) opens the same order.User C receives the standard lockout message identifying User A and enters View Only mode.
3User C can use the Release Lock action to override.The Release Lock action is enabled and functional (covered in detail in Test Area 9).

TC-12.3: SUPER User Lock Is Respected by CS Users

StepActionExpected Result
1User C (SUPER) opens a service order and holds the lock.User C holds the lock.
2User A (BW-CS-SERVICE) opens the same order.User A receives the lockout message identifying User C and enters View Only mode.
3User A cannot use the Release Lock action.The Release Lock action is either hidden or produces an error when clicked (User A does not have SUPER).